﻿/**
* @file port.h
* @brief this is a brief description
* @details this is the detail description.
* @author fulong 
* @data 2014/10/23
* @version 1.0
* @par Copyright (c):
* @par First build
*     version: fulong 
*     data: 2014/10/23
*/
#ifndef __PORT_H__
#define __PORT_H__
#include "../hal_include/hal_types.h"
//about i2c
/*!< set waht the sda of i2c port is */
#define I2C_SDA_PORT(portdata)  p3_4=(portdata)
#define i2c_sda_output() set_output(3,4)
#define i2c_sda_input() set_input(3,4)
#define READ_I2C_SDA_PORT() p3_4
/*!< set waht the scl of i2c port is */
#define I2C_SCL_PORT(portdata) p3_5=(portdata)
#define i2c_sck_output() set_output(3,5)

//about 485
#define CTRL_485()  {set_output(3,1);}
#define CTRL_PORT_485(data) p3_1=(data)

#ifdef V1_4
//about running led
#define RUN_LED_ON() p6_6=0
#define RUN_LED_OFF() p6_6=1
#define RUN_LED_CTRL() set_output(6, 6);
//about output
/*!< test output port*/
//#define OUTPUT_TEST
#define OUTPUT_CTRL_ON() p6_5=1
#define set_output_led_ctrl_output() set_output(6,5)

#define OUT20(odata) p2_3=(odata)
#define OUT17(odata) p6_0=(odata)
#define OUT16(odata) p8_0=(odata)
#define OUT15(odata) p2_2=(odata)
#define OUT14(odata) p2_1=(odata)
#define OUT13(odata) p8_1=(odata)
#define OUT12(odata) p8_4=(odata)
#define OUT11(odata) p8_5=(odata)
#define OUT10(odata) p8_6=(odata)
#define OUT7(odata) p8_7=(odata)
#define OUT6(odata) p1_4=(odata)
#define OUT5(odata) p1_5=(odata)
#define OUT4(odata) p1_6=(odata)
#define OUT3(odata) p2_4=(odata)
#define OUT2(odata) p2_0=(odata)
#define OUT1(odata) p2_7=(odata)
#define OUT0(odata) p9_0=(odata)

#define set_out0_output()  set_output(9,0)
#define set_out1_output()  set_output(2,7)
#define set_out2_output()  set_output(2,0)
#define set_out3_output()  set_output(2,4)
#define set_out4_output()  set_output(1,6)
#define set_out5_output()  set_output(1,5)
#define set_out6_output()  set_output(1,4)
#define set_out7_output()  set_output(8,7)
#define set_out10_output()  set_output(8,6)
#define set_out11_output()  set_output(8,5)
#define set_out12_output()  set_output(8,4)
#define set_out13_output()  set_output(8,1)
#define set_out14_output()  set_output(2,1)
#define set_out15_output()  set_output(2,2)
#define set_out16_output()  set_output(8,0)
#define set_out17_output()  set_output(6,0)
#define set_out20_output()  set_output(2,3)

//about input

#define set_in0_input() set_input(4,5)
#define set_in1_input() set_input(1,7)
#define set_in2_input() set_input(9,1)
#define set_in3_input() set_input(9,2)
#define set_in4_input() set_input(9,3)
#define set_in5_input() set_input(5,0)
#define set_in6_input() set_input(4,3)
#define set_in7_input() set_input(5,4)
#define set_in10_input() set_input(5,3)
#define set_in11_input() set_input(5,7)
#define set_in12_input() set_input(5,6)
#define set_in13_input() set_input(5,5)

#define IN0_PIN (!p4_5)
#define IN1_PIN (!p1_7)
#define IN2_PIN p9_1
#define IN3_PIN p9_2
#define IN4_PIN p9_3
#define IN5_PIN p5_0
#define IN6_PIN p4_3
#define IN7_PIN p5_4
#define IN10_PIN p5_3
#define IN11_PIN p5_7
#define IN12_PIN p5_6
#define IN13_PIN p5_5


//about keyboard
#define KEYBOARD_ROW 4
#define KEYBOARD_LINE 4

#define set_keycol1_port_input()      set_input(1,2)
#define set_keycol2_port_input()      set_input(1,3)
#define set_keycol3_port_input()      set_input(3,2)
#define set_keycol4_port_input()      set_input(3,6)

#define set_keyrow1_port_output()     set_output(0,5)
#define set_keyrow2_port_output()     set_output(6,1)
#define set_keyrow3_port_output()     set_output(1,0)
#define set_keyrow4_port_output()     set_output(1,1)

#define keyrow1_out(odata) p0_5=(odata)
#define keyrow2_out(odata) p6_1=(odata)
#define keyrow3_out(odata) p1_0=(odata)
#define keyrow4_out(odata) p1_1=(odata)

#define keycol1_in p1_2
#define keycol2_in p1_3
#define keycol3_in p3_2
#define keycol4_in p3_6
#endif
#ifdef V1_1
//about running led
#define RUN_LED_ON() p6_7=0
#define RUN_LED_OFF() p6_7=1
#define RUN_LED_CTRL() set_output(6, 7);
//about output
/*!< test output port*/
//#define OUTPUT_TEST
#define OUTPUT_CTRL_ON() p8_0=1
#define set_output_led_ctrl_output() set_output(8,0)

#define OUT21(odata) p5_2=(odata)
#define OUT20(odata) p5_1=(odata)
#define OUT17(odata) p2_1=(odata)
#define OUT16(odata) p2_2=(odata)
#define OUT15(odata) p4_5=(odata)
#define OUT14(odata) p6_0=(odata)
#define OUT13(odata) p8_1=(odata)
#define OUT12(odata) p8_2=(odata)
#define OUT11(odata) p8_3=(odata)
#define OUT10(odata) p8_4=(odata)
#define OUT7(odata) p8_5=(odata)
#define OUT6(odata) p8_6=(odata)
#define OUT5(odata) p8_7=(odata)
#define OUT4(odata) p1_4=(odata)
#define OUT3(odata) p1_5=(odata)
#define OUT2(odata) p1_6=(odata)
#define OUT1(odata) p1_7=(odata)
#define OUT0(odata) p2_0=(odata)

#define set_out0_output()  set_output(2,0)
#define set_out1_output()  set_output(1,7)
#define set_out2_output()  set_output(1,6)
#define set_out3_output()  set_output(1,5)
#define set_out4_output()  set_output(1,4)
#define set_out5_output()  set_output(8,7)
#define set_out6_output()  set_output(8,6)
#define set_out7_output()  set_output(8,5)
#define set_out10_output()  set_output(8,4)
#define set_out11_output()  set_output(8,3)
#define set_out12_output()  set_output(8,2)
#define set_out13_output()  set_output(8,1)
#define set_out14_output()  set_output(6,0)
#define set_out15_output()  set_output(4,5)
#define set_out16_output()  set_output(2,2)
#define set_out17_output()  set_output(2,1)
#define set_out20_output()  set_output(5,1)
#define set_out21_output()  set_output(5,2)

//about input

#define set_in0_input() set_input(2,3)
#define set_in1_input() set_input(2,4)
#define set_in2_input() set_input(2,5)
#define set_in3_input() set_input(2,6)
#define set_in4_input() set_input(2,7)
#define set_in5_input() set_input(9,0)
#define set_in6_input() set_input(9,3)
#define set_in7_input() set_input(9,2)
#define set_in10_input() set_input(9,1)
#define set_in11_input() set_input(5,4)
#define set_in12_input() set_input(5,3)
#define set_in13_input() set_input(5,0)

#define IN0_PIN p2_3
#define IN1_PIN p2_4
#define IN2_PIN p2_5
#define IN3_PIN p2_6
#define IN4_PIN p2_7
#define IN5_PIN p9_0
#define IN6_PIN p9_3
#define IN7_PIN p9_2
#define IN10_PIN p9_1
#define IN11_PIN p5_4
#define IN12_PIN p5_3
#define IN13_PIN p5_0


//about keyboard
#define KEYBOARD_ROW 2
#define KEYBOARD_LINE 4

#define set_keycol1_port_input()      set_input(1,2)
#define set_keycol2_port_input()      set_input(1,3)
#define set_keycol3_port_input()      set_input(3,2)
#define set_keycol4_port_input()      set_input(3,6)

#define set_keyrow1_port_output()     set_output(1,0)
#define set_keyrow2_port_output()     set_output(1,1)

#define keyrow1_out(odata) p1_0=(odata)
#define keyrow2_out(odata) p1_1=(odata)

#define keycol1_in p1_2
#define keycol2_in p1_3
#define keycol3_in p3_2
#define keycol4_in p3_6
#endif

#endif /* __PORT_H__ */


